<?php
App::uses('AppController', 'Controller');
App::uses('CakeTime', 'Utility');
/**
 * CaixaRapidos Controller
 *
 * @property CaixaRapido $CaixaRapido
 */
class CaixaRapidosController extends AppController {
	public $components = array( 'RequestHandler' );
	public $helpers = array('Js');
	
	function beforeFilter(){
		$this->loadModel('Produto');
		$this->loadModel('CaixaRapidosProduto');
	}

/**
 * index method
 *
 * @return void
 */
	public function index() {
		$this->Filter->addFilters(
			array(
				'filter1' => array(
					'CaixaRapido.data_hora' => array(
						'operator' => 'BETWEEN',
						'between' => array(
							//'text' => __(' e ', true), // opcional
							'date'  => 'true'  // opcional
						)
					)
				)
			)
		);
		
		$this->Filter->setPaginate('order', 'CaixaRapido.data_hora DESC'); // opcional
		$this->Filter->setPaginate('limit', 15);              // opcional
		
		// Define conditions
		$this->Filter->setPaginate('conditions', $this->Filter->getConditions());
		
		$this->CaixaRapido->recursive = 0;
		$this->set('caixaRapidos', $this->paginate());
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	# comentado pois não será usado no sistema (por enquanto)
	/* public function view($id = null) {
		if (!$this->CaixaRapido->exists($id)) {
			throw new NotFoundException(__('Código do caixa rapido é inválido!'));
		}
		$options = array('conditions' => array('CaixaRapido.' . $this->CaixaRapido->primaryKey => $id));
		$this->set('caixaRapido', $this->CaixaRapido->find('first', $options));
	} */

/**
 * add method
 *
 * @return void
 */
	public function add() {
		if ($this->request->is('post')) {
			$this->CaixaRapido->create();
			$this->request->data['CaixaRapido']['data_hora'] = date('Y-m-d H:i:s');
			$this->CaixaRapidosProduto->data = $this->request->data['CaixaRapidosProduto'];
			for($i = 0; $i < count($this->request->data['CaixaRapidosProduto']); $i++){
				$prod =  $this->Produto->find('first', array('fields'=> 'preco_venda', 'conditions' => array('Produto.id' => $this->request->data['CaixaRapidosProduto'][$i]['produto_id'])));
				$this->request->data['CaixaRapido']['total'] += $prod['Produto']['preco_venda'] * $this->request->data['CaixaRapidosProduto'][$i]['qtde'];
			}
			if ($this->CaixaRapido->save($this->request->data)) {
				$this->Session->setFlash(__('Transação salva com sucesso.'), 'default', array('class' => 'alert alert-success'));
				$id = $this->CaixaRapido->getLastInsertID();
				if(isset($this->request->data['CaixaRapidosProduto'])){
					foreach ($this->request->data['CaixaRapidosProduto'] as $produto ){
						$produto['caixa_rapido_id'] = $id;
						$this->CaixaRapido->CaixaRapidosProduto->create();
						$this->CaixaRapido->CaixaRapidosProduto->save($produto);
					}
					return $this->redirect(array('action' => 'index'));
				}
			} else {
				$this->Session->setFlash(__('Operação não pode ser salva. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
			}
		}
		$produtos = $this->Produto->find('list', array('fields' => 'Produto.id, Produto.nome, Produto.preco_venda'));
		$this->set(compact('produtos'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	# comentado pois não será usado no sistema (por enquanto)
	/* public function edit($id = null) {
		if (!$this->CaixaRapido->exists($id)) {
			throw new NotFoundException(__('Código de verificação da venda inválido.'));
		}
		if ($this->request->is(array('post', 'put'))) {
			if ($this->CaixaRapido->save($this->request->data)) {
				$this->Session->setFlash(__('O registro de venda foi editado com sucesso.'), 'default', array('class' => 'alert alert-success'));
				return $this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('O registro de venda nao pode ser salvo. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
			}
		} else {
			$options = array('conditions' => array('CaixaRapido.' . $this->CaixaRapido->primaryKey => $id));
			$this->request->data = $this->CaixaRapido->find('first', $options);
		}
		$produtos = $this->CaixaRapido->Produto->find('list');
		$this->set(compact('produtos'));
	} */

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		$this->CaixaRapido->id = $id;
		if (!$this->CaixaRapido->exists()) {
			throw new NotFoundException(__('Código de verificação inválido!'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->CaixaRapido->delete()) {
			$this->Session->setFlash(__('O registro de venda foi deletado com sucesso.'), 'default', array('class' => 'alert alert-success'));
		} else {
			$this->Session->setFlash(__('O registro da venda não pode ser deletado. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
		}
		return $this->redirect(array('action' => 'index'));
	}

}